home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 684 / 684.xpi / chrome / fireftp.jar / content / js / local / localFile.js < prev    next >
Text File  |  2009-11-11  |  6KB  |  187 lines

  1. var localFile = {
  2.   init : function(path) {
  3.     try {
  4.       var file = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
  5.       file.initWithPath(path);
  6.       return file;
  7.     } catch (ex) {
  8.       return null;
  9.     }
  10.   },
  11.  
  12.   launch : function(file) {
  13.     try {
  14.       if (file.exists()) {
  15.         file.launch();
  16.       }
  17.     } catch (ex) {
  18.       debug(ex);
  19.     }
  20.   },
  21.  
  22.   create : function(isDir, name) {
  23.     var dir = this.init(localTree.constructPath(gLocalPath.value, name));
  24.  
  25.     try {
  26.       dir.create(isDir ? Components.interfaces.nsILocalFile.DIRECTORY_TYPE : Components.interfaces.nsILocalFile.NORMAL_FILE_TYPE,
  27.                  isDir ? 0755 : 0644);
  28.     } catch (ex) {
  29.       debug(ex);
  30.       error(gStrbundle.getString(isDir ? "dirFail" : "fileFail"));
  31.       return null;
  32.     }
  33.  
  34.     return dir;
  35.   },
  36.  
  37.   remove : function(file, prompt, multiple) {
  38.     if (prompt && multiple && multiple > 1) {                                           // deleting multiple
  39.       if (!window.confirm(gStrbundle.getFormattedString("confirmDelete2", [multiple]) + '\n'
  40.                         + gStrbundle.getString("localDeleteWarning"))) {
  41.         return false;
  42.       }
  43.     } else if (prompt && file.isDirectory()) {                                          // deleting a directory
  44.       if (!window.confirm(gStrbundle.getFormattedString("confirmDelete3", [file.leafName]) + '\n'
  45.                         + gStrbundle.getString("localDeleteWarning"))) {
  46.         return false;
  47.       }
  48.     } else if (prompt) {                                                                // deleting a file
  49.       if (!window.confirm(gStrbundle.getFormattedString("confirmDelete", [file.leafName]) + '\n'
  50.                         + gStrbundle.getString("localDeleteWarning"))) {
  51.         return false;
  52.       }
  53.     }
  54.  
  55.     try {
  56.       ++gProcessing;
  57.       var innerEx = gFireFTPUtils.removeFile(file);
  58.       --gProcessing;
  59.  
  60.       if (innerEx) {
  61.         throw innerEx;
  62.       }
  63.     } catch (ex) {
  64.       debug(ex);
  65.       error(gStrbundle.getString("delFail"));
  66.       return false;
  67.     }
  68.  
  69.     return true;
  70.   },
  71.  
  72.   rename : function(file, newName) {
  73.     if (!file.exists()) {
  74.       return false;
  75.     }
  76.  
  77.     if (!newName || file.leafName == newName) {
  78.       return false;
  79.     }
  80.  
  81.     var oldName = file.leafName;
  82.  
  83.     try {
  84.       var newFile = this.init(file.parent.path);
  85.       newFile.append(newName);
  86.  
  87.       if (newFile && newFile.exists() && (gSlash == '/' || oldName.toLowerCase() != newName.toLowerCase())) {
  88.         error(gStrbundle.getString("renameFail"));
  89.         return false;
  90.       }
  91.  
  92.       file.moveTo(null, newName);                                                       // rename the file
  93.     } catch (ex) {
  94.       if (gSlash == '\\' && oldName.toLowerCase() == newName.toLowerCase()) {           // we renamed the file the same but with different case
  95.         return true;                                                                    // for some reason this throws an exception
  96.       }
  97.  
  98.       debug(ex);
  99.       error(gStrbundle.getString("renameFail"));
  100.       return false;
  101.     }
  102.  
  103.     return true;
  104.   },
  105.  
  106.   showProperties : function(file, recursive) {
  107.     try {
  108.       var date = new Date(file.lastModifiedTime);
  109.       date     = gMonths[date.getMonth()] + ' ' + date.getDate() + ' ' + date.getFullYear() + ' ' + date.toLocaleTimeString();
  110.  
  111.       var recursiveFolderData = { type: "local", nFolders: 0, nFiles: 0, nSize: 0 };
  112.  
  113.       if (file.isDirectory() && recursive) {
  114.         localTree.getRecursiveFolderData(file, recursiveFolderData);
  115.       }
  116.  
  117.       var origWritable = file.isWritable();
  118.  
  119.       var params = { path                : file.path,
  120.                      leafName            : file.leafName,
  121.                      fileSize            : file.fileSize,
  122.                      date                : date,
  123.                      origPermissions     : gSlash == "/" ? "-" + localTree.convertPermissions(false, file.permissions) : 0,
  124.                      permissions         : "",
  125.                      writable            : file.isWritable(),
  126.                      hidden              : file.isHidden(),
  127.                      isDirectory         : file.isDirectory(),
  128.                      multipleFiles       : false,
  129.                      isLinuxType         : gSlash == "/",
  130.                      isLocal             : true,
  131.                      recursiveFolderData : file.isDirectory() && recursive ? recursiveFolderData : null,
  132.                      returnVal           : false,
  133.                      isSymlink           : file.isSymlink(),
  134.                      symlink             : file.isSymlink() ? file.target : "" };
  135.  
  136.       window.openDialog("chrome://fireftp/content/properties.xul", "properties", "chrome,modal,dialog,resizable,centerscreen", params);
  137.  
  138.       if (!params.returnVal) {
  139.         return false;
  140.       }
  141.  
  142.       if (params.isLinuxType) {
  143.         if (params.permissions) {
  144.           if (gPlatform == 'mac') {
  145.             var perm         = (file.isDirectory() ? "4" : "10") + params.permissions;
  146.             file.permissions = parseInt(perm, 8);
  147.           } else {
  148.             file.permissions = parseInt(params.permissions, 8);
  149.           }
  150.           return true;
  151.         }
  152.       } else if (origWritable != params.writable) {
  153.         if (params.writable) {
  154.           file.permissions = file.permissions == 365 ? 511 : 438;
  155.         } else {
  156.           file.permissions = file.permissions == 511 ? 365 : 292;
  157.         }
  158.  
  159.         return true;
  160.       }
  161.     } catch (ex) {
  162.       debug(ex);
  163.     }
  164.  
  165.     return false;
  166.   },
  167.  
  168.   verifyExists : function(file) {
  169.     var exists = file && file.exists();
  170.  
  171.     if (!exists && file) {
  172.       error(gStrbundle.getFormattedString("fileDoesNotExist", [file.path]));
  173.     }
  174.  
  175.     return exists;
  176.   },
  177.  
  178.   testSize : function(file) {                                                           // XXX in linux, files over 2GB throw an exception
  179.     try {
  180.       var x = file.fileSize;
  181.       return true;
  182.     } catch (ex) {
  183.       return false;
  184.     }
  185.   }
  186. }
  187.